package CutLoad.components.container
{
	import CutLoad.Base;
	
	import flash.display.Sprite;
	import flash.events.MouseEvent;

	/**
	 * 点击，在两个显示对象之间切换,初始化时为隐藏第二个显示对象 
	 * @author smallerbird
	 * 
	 */
	public class SwapShow2Btn
	{
		private var btn1:Sprite,btn2:Sprite;
		private var click:Function;
		//如果是初始化时调用ShowOne就不调用用户自定义的方法了
		private var iniShowOne:Boolean=true;
		//其它信息
		private var objOtherInfo:Object;
		//是否启用
		private var isEnable:Boolean=true
		private var saveLaseValue:Number=0;
		/**
		 * 初始化 
		 * @param btn1 第一个显示对象
		 * @param btn2 第二个显示对象
		 * @param click 切换状态显示时调用:格式：function(状态:Number,自已:SwapShow2Btn)   状态值:1或2
		 * 
		 */		
		public function SwapShow2Btn(btn1:Sprite,btn2:Sprite,click:Function):void
		{
			this.objOtherInfo=new Object();
			this.btn1=btn1;
			this.btn2=btn2;
			this.click=click;
			btn1.addEventListener(MouseEvent.CLICK,funClick);
			btn2.addEventListener(MouseEvent.CLICK,funClick);
			showOne(1);
		}
		/**
		 * 设置是否可用 
		 * @param isOk
		 * 
		 */		
		public function set enable(isOk:Boolean):void{
			isEnable=isOk;
		}
		/**
		 * 是否可用 
		 * @return 
		 * 
		 */		
		public function get enable():Boolean{
			return isEnable;
		}
		/**
		 * 显示一个 
		 * @param t 显示哪一个1或2
		 * @param isCallFuntion 是否调用状态显示的方法.
		 * 
		 */		
		public function showOne(t:Number=1,isCallFuntion:Boolean=true):void{
			if(t!=1&&t!=2) throw new Error("只能是1或者2");
			saveLaseValue=t;
			if(!iniShowOne&&isCallFuntion) this.click(t,this);
			if(iniShowOne) iniShowOne=false;
			
			if(t==1){
				btn1.visible=true;
				btn2.visible=false;
			}else{
				btn1.visible=false;
				btn2.visible=true;
			}
		}
		/**
		 * 当前显示的是那一个按钮 
		 * @return 1第一个,2第二个
		 * 
		 */		
		public function get value():Number{
			if(btn1.visible) return 1;
			return 2;
		}
		/**
		 * 显示或隐藏 
		 * @param isShow
		 * 
		 */		
		public function setShowHide(isShow:Boolean=true):void{
			if(isShow){
				this.showOne(saveLaseValue,false);
			}else{
				saveLaseValue=this.value;
				btn1.visible=false;
				btn2.visible=false;
			}
		}
		/**
		 * 设置透明度 
		 * @param aa
		 * 
		 */		
		public function setAlpha(aa:Number):void{
			btn1.alpha=aa;
			btn2.alpha=aa;
		}
		/**
		 *获得额外信息 
		 * @return 
		 * 
		 */		
		public function getOtherInfo():Object{
			return objOtherInfo;
		}
		/**
		 *附加得额外信息 
		 * @param obj
		 * 
		 */		
		public function setOtherInfo(obj:Object):void{
			objOtherInfo=obj;
		}
		//
		private function funClick(e:MouseEvent):void{
			if(!enable) return;
			if(e.target==btn1){
				showOne(2)
			}else{
				showOne(1)
			}
		}
	}
}